23

» WarCraft 3 / Проблема с нестандартным ИИ

Похожие вопросы:

ответ
проблема в том что они создаются триггерно
посмотри содержимое бж функции которая даёт стартовых юнитов
там вроде должно быть решение
ответ
Андреич:
Все карты кампании с нестандартными обьектами надо запускать в игре через "Доп. Кампании".Хоть в JNGP, хоть в просто WE.
ответ
GearOfRage, в данном случае надо тестировать кампанию, а не саму карту. Открываешь через игру доп кампанию и играешь нужную миссию (для этого надо сделать все миссии временно доступными)
ответ
Просто оставлю это и это здесь
ответ
~8gabriel8:
Недавно сделал человеку универсальный триггер для таких случаев, который работает и в алтаре, и в таверне.
Событие: Юнит входит в область (Вся игровая карта)
Условие: (Триггеринг юнит) равно Герой равно Да
Действие: Игрок - Установить лимит юнита (тип юнита (Триггеринг юнит)) для игрока (Owner of unit (Триггеринг юнит)) в 1

23

» IrInA Host Bot / Проблема с Ириной

Похожие вопросы:

ответ
В папке с игрой есть sl.exe sl_hidden.mix
ответ
rsfghd, Ну так у меня и так 1.26а, закинул в папку с игрой коннектор, и game.dll, сайт коннектор видит, сам коннектор меня подключает, но игры не появляются.

Проблема решена, я не тот коннектор запускал.

23

» WarCraft 3 / LEGION TD x10 OZGame Edition v3.8b

Ваш ресурс не прошёл автомодерацию. Пожалуйста, внесите исправления или ожидайте проверки модератором.
Причина
Должен присутствовать файл одного из типов: w3m, w3x, scm, scx, sc2map, sc2ma, w3n, sc2mod, zip, 7z, rar, tar, gz, apk, gzip, jar, lzip, tgz, tbz2, bz2, zipx, zz, dmg, ipg, z, iso
Your resource has not passed automoderation. Please make corrections or wait for the moderator to check.
Reason
There must be a file of one of the following types: w3m, w3x, scm, scx, sc2map, sc2ma, w3n, sc2mod, zip, 7z, rar, tar, gz, apk, gzip, jar, lzip, tgz, tbz2, bz2, zipx, zz, dmg, ipg, z, iso
// CID1
23

» WarCraft 3 / Проблема с ядом

Похожие вопросы:

ответ
Если по игроку то массив переменных по игроку, если прям каждого конкретного героя каждого игрока - то через custom value или прочий регистратор юнитов.
Чета типа так, для ознакомления с CV
ответ
Параметры стака ядов с одним и тем же баффом, это нужно чтобы складывались замедлени и\или урон от разных юнитов, или бафф тупо обновлялся.
С одним из параметров яды с разными баффами скатаются независимо, каждый вешает свой бафф. (годная основа для замедляющих способностей)
А игра вылетает из за зацикливания, темболее бафф при удалении и появлении наносит 0.00 ед урона, это так для справки.
ответ
Гуванч, ну как бы написано одно, а по факту другое
ответ
Никакие, делать лишь кастом.

23

» WarCraft 3 / Помогите найти карту

Похожие вопросы:

ответ
По описанию похожа на Necris.
ответ
ответ
тема закрыта, смог найти кому интересно 10HeroSiege но именно с красным ланшафтом карта топ как на толпу так и на одного
ответ
ну.. есть похожее что-то, только не горизонтально разделено, а вертикально, и вместо кристалла замки
castle fight

23

» WarCraft 3 / Это чё?

Похожие вопросы:

ответ
читаем статьи и делаем
ответ
N раз в секунду смотреть текущий интеллект и сравнивать со старым. Если есть разница, то уменьшить или увеличить здоровье. После этого записать текущий интеллект в переменную для "старого".
Моя мысль: каждую 1.00 прибавлять нужное количество здоровья и создавать таймер, который через секунду это всё удалит. Но в таком случае здоровье остаётся неизменным, что довольно-таки логично.
Не уловил, звучит как ерунда.
ответ
EviLInside, ну я бы вообще мог сделать отдельный счёт периодичности для каждого юнита, и выдавать дополнительное ХП в зависимости от того, когда это необходимо.
При каждом срабатывании таймера проверить что время периодика меньше такта таймера.
И увеличивать периодик на значение из расчётов, т.е. от 0.5 до 5.0 в зависимости от % ХП.
И каждый раз при этом хилить на 50% от Силы. Вот и всё.
Т.е. тут глобальная группа заменится на массив из связки юнит/время.
ответ
ConsoleTexture01=UI\Console\NightElf\NightElfUITile01
ConsoleTexture02=UI\Console\NightElf\NightElfUITile02
ConsoleTexture03=UI\Console\NightElf\NightElfUITile03
ConsoleTexture04=UI\Console\NightElf\NightElfUITile04
ConsoleTexture05=UI\Console\NightElf\NightElfUITile05
ConsoleTexture06=UI\Console\NightElf\NightElfUITile06
ConsoleInventoryCoverTexture=UI\Console\NightElf\NightElfUITile-InventoryCover.blp

ConsoleTexture01=UI\Console\Undead\UndeadUITile01
ConsoleTexture02=UI\Console\Undead\UndeadUITile02
ConsoleTexture03=UI\Console\Undead\UndeadUITile03
ConsoleTexture04=UI\Console\Undead\UndeadUITile04
ConsoleTexture05=UI\Console\Undead\UndeadUITile05
ConsoleTexture06=UI\Console\Undead\UndeadUITile06
ConsoleInventoryCoverTexture=UI\Console\Undead\UndeadUITile-InventoryCover.blp

ConsoleTexture01=UI\Console\Human\HumanUITile01
ConsoleTexture02=UI\Console\Human\HumanUITile02
ConsoleTexture03=UI\Console\Human\HumanUITile03
ConsoleTexture04=UI\Console\Human\HumanUITile04
ConsoleTexture05=UI\Console\Human\HumanUITile05
ConsoleTexture06=UI\Console\Human\HumanUITile06
ConsoleInventoryCoverTexture=UI\Console\Human\HumanUITile-InventoryCover.blp
ответ
в случае чего, ты можешь оставить модель меча отдельной моделью, и уже триггерно/предметом/способностью прикрепить эффект к руке юнита

23

» WarCraft 3 / Как сделать карту темной?

Похожие вопросы:

ответ
Custom script call SetDayNightModels({{,)}}
Карта пример есть здесь
ответ
SetDayNightModels(,) - темнота
SetDayNightModels("Environment\\DNC\\DNCLordaeron\\DNCLordaeronTerrain\\ DNCLordaeronTerrain.mdx", "Environment\\DNC\\DNCLordaeron\\DNCLordaeronUnit\\DNCLordaeronUnit.mdx") - отключить темноту
Свет от фонаря это моделька, прилагаю файл модельки и карту - пример
ответ
Для начала читаем правила
Затем, новичок самостоятельно сделать эти способности не сможет, если речь идёт о мультиплеере и оптимизированном исполнении.
И тебе лучше обратиться сюда:
ответ
редачить эти поля в редакторе объектов
ответ
Хм, функцию кика там найди, за афк...

23

» WarCraft 3 / Day of the Zombie

Ваш ресурс не прошёл автомодерацию. Пожалуйста, внесите исправления или ожидайте проверки модератором.
Причина
Число вставленных изображений: 1, а требуется не менее 3
Your resource has not passed automoderation. Please make corrections or wait for the moderator to check.
Reason
Count of inserted images is: 1, but required not less than 3
// CID3
23

» WarCraft 3 / Условие на движение

Похожие вопросы:

ответ
Регион будет "содержать юнит" через 0.4 сек после того, как юнит "вошёл в регион". Так что приказы игнорируются из-за невыполнения условия
[решается например вейтом 0.4 сек впереди]
ответ
на каждый снаряд делаешь группу, в нее заносишь всех кто был поражен
done
ответ
Скинь скриншот триггера.
действие - отряд (юнит в областе 1) перейти нападая на противников (центр область 2)
Этот приказ отдавать нужно не отряду (группе юнитов), а единственному юниту.
ответ

А еще у меня там местами xpcall отладочный висит, там где я ловил косяки и не убрал его потом, без него код чуть проще становится, он нужен только для отлова ошибок и в моем случае вывода их на экран.

Это печально, новые костыли, а я уже обрадовался, что ничего обнулять и чистить не нужно =(
Не нужно обнулять локалки в функциях и все что ограниченного срока жизни, но всякие системы хранения данных они же либо глобальные либо в "локальном" скопе всей карты и, соответственно, живут пока загружена карта - там вручную подчищать надо, естественно. Можно делать это полу-автоматически как у меня, можно вручную когда становится известно что данные уже не нужны. Можно было бы использовать таблицу со слабыми ключами, но тогда возникает вопрос что использовать в качестве ключей - можно прямо на самого юнита вешать, чтобы когда игра его удалит из памяти, таблица почистилась сборщиком мусора, но нет гарантии что это будет работать и не будет вызывать десинки т.к. сборщику мусора синхронизация не указ.
Bergi_Bear:
но мне можно себе такой вариант забрать или надо ещё что-то дополнительно записать?
У меня библиотека отгорожена только ради того чтобы автоматизировать сборку мусора и создание новых таблиц при обращении по хендлу на который ничего нет.
Минимальный вариант, наверно, такой:
local HandleData = {} -- я использую локальные переменные в скопе карты, при этом важен порядок но доступ к ним идет чуть быстрее чем в глобальном скопе

function ForceUnit (u,a,d,s,flag)
  local data = HandleData[GetHandleId(u)]
  if (data==nil) then data = {} HandleData[GetHandleId(u)] = data end
  data.a = a
  data.d = d
  data.s = s
  data.flag = flag
  GroupAddUnit(gforce, u)
end
-- --------------
ForGroup(gforce, function()
  local u=GetEnumUnit()
  local h=GetHandleId(u)
  local data = HandleData[h]
  local a=data.a
  local d=data.d
  local s=data.s
  local flag=data.flag
  ...
end
ответ
Я бы поработал с блокираторами пути. Сделать особый блокиратор (только для индикации), который как бы говорит нам о том, что можно идти и под ним, и по нему, а дальше физика в зависимости от текущего положения.
С регионами просто больше времени потратишь

23

» WarCraft 3 / Warcraft III World Edit компания

Похожие вопросы:

ответ
Кликаешь на героя 2 раза в редакторе, и там будут его параметры, затем настраиваешь его как нужно

23

» WarCraft 3 / Reforged - Доп.Кампании

Похожие вопросы:

ответ
Единственный способ спасения от этого - бекапы. Хотя уже год не наблюдал этой проблемы, мб пофикшено (но это не точно)

23

» WarCraft 3 / Вопрос по лору

Похожие вопросы:

ответ
Головокружение - дамми каст в цель какого нить увечья или замедления волшебницы, а урон наносится функцией UnitDamageTarget в разделе Unit на гуях. Подробно - смотри конфетные войны 2004 от близзардов, там это есть.

23

» WarCraft 3 / Не работает триггер победы

Похожие вопросы:

ответ
а теперь триггер и у первого игрока не работает
У тебя отсчет идет со 2-го игрока: "local integer i = 1"
ответ
вот стандартный набор функций мили игры в триггере инициализации:
    call MeleeStartingVisibility(  )
    call MeleeStartingHeroLimit(  )
    call MeleeGrantHeroItems(  )
    call MeleeStartingResources(  )
    call MeleeClearExcessUnits(  )
    call MeleeStartingUnits(  )
    call MeleeStartingAI(  )
    call MeleeInitVictoryDefeat(  )
По названиям функций думаю понятно что они делают, рассмотрим по подробнее MeleeInitVictoryDefea( )
function MeleeInitVictoryDefeat takes nothing returns nothing
    local trigger    trig
    local integer    index
    local player     indexPlayer

    // Create a timer window for the "finish soon" timeout period, it has no timer
    // because it is driven by real time (outside of the game state to avoid desyncs)
    set bj_finishSoonTimerDialog = CreateTimerDialog(null)

    // Set a trigger to fire when we receive a "finish soon" game event
    set trig = CreateTrigger()
    call TriggerRegisterGameEvent(trig, EVENT_GAME_TOURNAMENT_FINISH_SOON)
    call TriggerAddAction(trig, function MeleeTriggerTournamentFinishSoon)

    // Set a trigger to fire when we receive a "finish now" game event
    set trig = CreateTrigger()
    call TriggerRegisterGameEvent(trig, EVENT_GAME_TOURNAMENT_FINISH_NOW)
    call TriggerAddAction(trig, function MeleeTriggerTournamentFinishNow)

    // Set up each player's mortality code.
    set index = 0
    loop
        set indexPlayer = Player(index)

        // Make sure this player slot is playing.
        if (GetPlayerSlotState(indexPlayer) == PLAYER_SLOT_STATE_PLAYING) then
            set bj_meleeDefeated[index] = false
            set bj_meleeVictoried[index] = false

            // Create a timer and timer window in case the player is crippled.
            set bj_playerIsCrippled[index] = false
            set bj_playerIsExposed[index] = false
            set bj_crippledTimer[index] = CreateTimer()
            set bj_crippledTimerWindows[index] = CreateTimerDialog(bj_crippledTimer[index])
            call TimerDialogSetTitle(bj_crippledTimerWindows[index], MeleeGetCrippledTimerMessage(indexPlayer))

            // Set a trigger to fire whenever a building is cancelled for this player.
            set trig = CreateTrigger()
            call TriggerRegisterPlayerUnitEvent(trig, indexPlayer, EVENT_PLAYER_UNIT_CONSTRUCT_CANCEL, null)
            call TriggerAddAction(trig, function MeleeTriggerActionConstructCancel)

            // Set a trigger to fire whenever a unit dies for this player.
            set trig = CreateTrigger()
            call TriggerRegisterPlayerUnitEvent(trig, indexPlayer, EVENT_PLAYER_UNIT_DEATH, null)
            call TriggerAddAction(trig, function MeleeTriggerActionUnitDeath)

            // Set a trigger to fire whenever a unit begins construction for this player
            set trig = CreateTrigger()
            call TriggerRegisterPlayerUnitEvent(trig, indexPlayer, EVENT_PLAYER_UNIT_CONSTRUCT_START, null)
            call TriggerAddAction(trig, function MeleeTriggerActionUnitConstructionStart)

            // Set a trigger to fire whenever this player defeats-out
            set trig = CreateTrigger()
            call TriggerRegisterPlayerEvent(trig, indexPlayer, EVENT_PLAYER_DEFEAT)
            call TriggerAddAction(trig, function MeleeTriggerActionPlayerDefeated)

            // Set a trigger to fire whenever this player leaves
            set trig = CreateTrigger()
            call TriggerRegisterPlayerEvent(trig, indexPlayer, EVENT_PLAYER_LEAVE)
            call TriggerAddAction(trig, function MeleeTriggerActionPlayerLeft)

            // Set a trigger to fire whenever this player changes his/her alliances.
            set trig = CreateTrigger()
            call TriggerRegisterPlayerAllianceChange(trig, indexPlayer, ALLIANCE_PASSIVE)
            call TriggerRegisterPlayerStateEvent(trig, indexPlayer, PLAYER_STATE_ALLIED_VICTORY, EQUAL, 1)
            call TriggerAddAction(trig, function MeleeTriggerActionAllianceChange)
        else
            set bj_meleeDefeated[index] = true
            set bj_meleeVictoried[index] = false

            // Handle leave events for observers
            if (IsPlayerObserver(indexPlayer)) then
                // Set a trigger to fire whenever this player leaves
                set trig = CreateTrigger()
                call TriggerRegisterPlayerEvent(trig, indexPlayer, EVENT_PLAYER_LEAVE)
                call TriggerAddAction(trig, function MeleeTriggerActionPlayerLeft)
            endif
        endif

        set index = index + 1
        exitwhen index == bj_MAX_PLAYERS
    endloop

    // Test for victory / defeat at startup, in case the user has already won / lost.
    // Allow for a short time to pass first, so that the map can finish loading.
    call TimerStart(CreateTimer(), 2.0, false, function MeleeTriggerActionAllianceChange)
endfunction
Вроде много, но тут все просто, создается три триггера один следит за тем сколько построил зданий любой играющий игрок, второй следит сколько зданий погибло у любого играющего игрока, ну а третий следит за теми кто ливнул, чтобы их не преребирать, два прочих вспомогательные, следят за отмненой строительства и прочее.
Итого делаем вывод, чтобы узнать проиграл или нет игрок, нам нужно узнать сколько у него живых зданий, меньше 1 игрок проиграл. А реализовать это можно как угодно, триггерами следящими за смертями и прочим или таймером, который будет переодически считать все здания каждого игрока и давать поражение тем игрокам у кого не осталось ни одного здания...
ответ
RobertStevenson, вейты вообще зло, а отсчёт можно сделать таймером. Точнее и без неожиданных багов.
Ждать пока - это вейт в цикле, работает это просто отвратно, сам с этим сталкивался. Лучше заменить на событие смерти колдуна.

Я всё же думаю, что дело не в вейтах. Выводи имя героя Hero[A]. Лучше выводить так: ("герой - ") + (Имя юнита (Hero[A])) + " " + (Число в строку (А)).
Если нет имени - героя просто нет в этой переменной.
ответ
TheBlakeRed, сорь что не ответил сразу, в бане сидел, в общем у тебя вместо включения триггера на вход - его выключение, а портал у тебя не тот стоял в условиях, равкоды смотреть надо, у людей во вкладке кампания такой портал, а у тебя нейтралы - сражения - ашенвальский портал, который как здание выглядит
в общем я поправил и добавил ещё один вариант со стандартным порталом, тебе нужно просто разблокировать одни функции на портал и заблокировать/удалить другие, думаю ты разберёшься

23

» WarCraft 3 / Не работает спелл у предмета

Похожие вопросы:

ответ
Пишу сюда - подскажите что делать?
Можно например посмотреть на хайве.

И на сайте есть похожая система.
ответ
reaper1691, так в чем проблема? Морф, две формы героя, один конь, одна способность-пустышка отвечающая за выбор коня и запуск триггера, который коня скроет, а герою запустит морф через предмет-руну, еще одна способность-пустышка, которая отвечает за запуск триггера запускающего обратный морф, телепортацию коня к герою и отмену скрытия коня.
ответ
Что мешало апгрейдом сделать или книжкой на хп? Про предметные абилки есть статьи, советую почитать.